use std::io::prelude::*;
use std::fs;
use std::net::TcpListener;
use std::net::TcpStream;

fn main() {
    println!("Hello, world!");
    let listener = TcpListener::bind("127.0.0.1:7878").unwrap();
    for stream in listener.incoming() {
        let stream = stream.unwrap();
        println!("Connection established!");
        handle_connection(stream);
    }
}

// fn handle_connection(mut stream:TcpStream){
//     let mut buffer = [0; 512];

//     stream.read(&mut buffer).unwrap();
    
//     // println!("Request:{}\n\n", String::from_utf8_lossy(&buffer[..]));
//     let contents = fs::read_to_string("hello.html").unwrap();
//     let response = format!("HTTP/1.1 200 OK\r\n\r\n{}", contents);
//     stream.write(response.as_bytes()).unwrap();
//     stream.flush().unwrap();
    
// }
fn handle_connection(mut stream: TcpStream) {
    let mut buffer = [0; 512];
    stream.read(&mut buffer).unwrap();
    let get = b"Request:GET / HTTP/1.1\r\n";
    if buffer.starts_with(get) {
        let contents = fs::read_to_string("hello.html").unwrap();
        let response = format!("HTTP/1.1 200 OK\r\n\r\n{}", contents);
        stream.write(response.as_bytes()).unwrap();
        stream.flush().unwrap();
    } else {
    // 一些其他的请求
        let status_line = "HTTP/1.1 404 NOT FOUND\r\n\r\n";
        let contents = fs::read_to_string("404.html").unwrap();
        let response = format!("{}{}", status_line, contents);
        stream.write(response.as_bytes()).unwrap();
        stream.flush().unwrap();
    }
}